arquiteto de software principais características